package com.fzshang.commen.util.pay;

import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;


/**
 * @author 张子艺
 * @packge com.xbxkj.util
 * @data 2019-04-09 20:31
 * @project GoodLuck
 */
public class Code {

    /**
     * 功能描述: <br>
     * 〈生成8位随机数邀请码纯数字〉
     *
     * @since: 1.0.0
     * @Author: PanYin
     */
    public static String createCodeShu() {
        String no = "";
        //初始化备选数组
        int[] defaultNums = new int[10];
        for (int i = 0; i < defaultNums.length; i++) {
            defaultNums[i] = i;
        }
        Random random = new Random();
        int[] nums = new int[6];
        //默认数组中可以选择的部分长度
        int canBeUsed = 10;
        //填充目标数组
        for (int i = 0; i < nums.length; i++) {
            //将随机选取的数字存入目标数组
            int index = random.nextInt(canBeUsed);
            nums[i] = defaultNums[index];
            //将已用过的数字扔到备选数组最后，并减小可选区域
            swap(index, canBeUsed - 1, defaultNums);
            canBeUsed--;
        }
        if (nums.length > 0) {
            for (int i = 0; i < nums.length; i++) {
                no += nums[i];
            }
        }
        return no;
    }

    private static void swap(int i, int j, int[] nums) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }

    /**
     * 要求是    貌似是28个人，随机分9个组，最后一个组4个人，每个组要求有个女孩子，实现分组
     * 分组 共28人 共9组 每组1个女孩  女孩共9个  男孩共28-9=19个
     * @param args
     */
    public static void main(String args[])  {
        int boyNum=19;
        int girlNum=9;
            //队列容量 19个男孩
        LinkedBlockingQueue<String>  boys=new LinkedBlockingQueue<String>(boyNum);
            //队列容量 9个女孩
        LinkedBlockingQueue<String>  girls=new LinkedBlockingQueue<String>(girlNum);

       //初始化队列
        for (int i = 1; i <=boyNum; i++) {
            boys.offer("第"+i+"个男孩");
        }
        for (int i = 1; i <=girlNum; i++) {
            girls.offer("第"+i+"个女孩");
        }
        System.err.println("初始化男孩队列："+boys.toString());

        System.err.println("初始化女孩队列："+girls.toString());

        //小组容器
        Map<String,List> group=new LinkedHashMap<>(9);
        List<String> lastGroups=new ArrayList<>();

        //最后一组四个人  三个男孩 一个女孩
        //从队列头 取出一个女孩
        lastGroups.add(girls.poll());
        //从队列头 取出3个男孩
        for (int i = 0; i < 3; i++) {
            lastGroups.add(boys.poll());
        }
        //最后一组 添加到小组容器中
        group.put("最后一组",lastGroups);

        //当前剩余的男孩数量分组应分每组分几个
        int lastBoysNum=boys.size()/8;
        for (int i = 1; i <= 8; i++) {
            List<String> groups=new ArrayList<>();
            for (int j = 0; j < lastBoysNum; j++) {
                String boy=boys.poll();
                groups.add(boy);
            }
            //添加一个女孩
            String girl=girls.poll();
            groups.add(girl);
            //最后组别 添加到小组容器中
            group.put("第"+i+"组",groups);

        }
        System.err.println("分组后："+group.toString());
        System.err.println("男孩队列余量："+boys.size()+"个");
        System.err.println("女孩队列余量："+girls.size()+"个");
    }
}
